package com.cndw.kungfu.model.battle;

import java.util.Map;

import com.cndw.kungfu.model.battle.buff.BuffLibI;


/**
 * 战斗对象接口
 * @author fantadust
 * @date 2011-4-27 上午11:31:24
 */
public interface Fighter {
	
	public long getUniqueId();
	public String getName();
	
	/**
	 * 获取血量
	 * @return
	 */
	public int getHp();
	/**
	 * 获得魔法量
	 * @return
	 */	
	public int getMp();
	/**
	 * 获得最大血量
	 * @return
	 */
	public int getMaxHp();
	/**
	 * 获得最大魔法量
	 * @return
	 */
	public int getMaxMp();
	
	/**
	 * 获得等级
	 * @return
	 */
	public int getLevel();

	

	
	/**
	 * 获取攻击
	 * @return
	 */
	public int getAttack();
	public int getDefense();
	/**
	 * 速度
	 * @return
	 */
	public int getSpeed();
	/**
	 * 命中
	 * @return
	 */
	public int getHit();
	/**
	 * 闪避
	 * @return
	 */
	public int getDodge();
	/**
	 * 暴击
	 * @return
	 */
	public int getCrit();
	/**
	 * 韧性
	 * @return
	 */
	public int getTough();
	
	
	public int getHurtAdd();
	public int getHurtRemove();
	public int getHurtReflex();
	public int getHurtAbsorb();
	public int getCritAdd();
	
	
	/**
	 * 进行血量转换
	 * @param alter
	 */
	public void alterHp(int alter);
	public void alterMp(int alter);
	
	public Fighter getLastAttackMe() ;
	public void setLastAttackMe(Fighter lastAttackMe);
	public Fighter getLastTarget();
	public void setLastTarget(Fighter lastTarget);
	
	public void onDead(Fighter source);
	public Object getSourceObject();
	public int getSceneId();
	/**
	 * 获得我的buff列表
	 * @return
	 */
	public Map<Integer, BuffLibI> getBuffMap();

	
	public void alterFixAttack(int fixAttack);
	public void alterFixDefense(int fixDefense);
	public void alterFixHit(int fixHit);
	public void alterFixDodge(int fixDodge);
	public void alterFixCrit(int fixCrit);
	public void alterFixTough(int fixTough);
	public int getFixAttack();
	public int getFixDefense();
	public int getFixHit();
	public int getFixDodge();
	public int getFixCrit();
	public int getFixTough();
	
	
	public int getBuffCoefficient();
	/**
	 * 角色的战力压力,不压制返回0
	 * @return
	 */
	public int getScoreCHK();
	
	
	public int getHurtCoffAdd();
	public int getHurtCoffRemove();
	
	public Object toVO();
	
	
}
